using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;

namespace uTorrentNetClient.ModelDesign.Converter
{
    public static class Utilities
    {
        public static string FormatFileSize(long SizeBytes, bool ShowZero, string Suffix)
        {
            long SizeToUse = SizeBytes;

            if (SizeToUse >= 1125899906842624)
            {
                Decimal size = Decimal.Divide(SizeToUse, 1125899906842624);
                return String.Format("{0:##.##} P{1}", size, Suffix);
            }
            if (SizeToUse >= 1099511627776)
            {
                Decimal size = Decimal.Divide(SizeToUse, 1099511627776);
                return String.Format("{0:##.##} T{1}", size, Suffix);
            }
            if (SizeToUse >= 1073741824)
            {
                Decimal size = Decimal.Divide(SizeToUse, 1073741824);
                return String.Format("{0:##.##} G{1}", size, Suffix);
            }
            else if (SizeToUse >= 1048576)
            {
                Decimal size = Decimal.Divide(SizeToUse, 1048576);
                return String.Format("{0:##.##} M{1}", size, Suffix);
            }
            else if (SizeToUse >= 1024)
            {
                Decimal size = Decimal.Divide(SizeToUse, 1024);
                return String.Format("{0:##.##} K{1}", size, Suffix);
            }
            else if (SizeToUse > 0 & SizeToUse < 1024)
            {
                Decimal size = SizeToUse;
                return String.Format("{0:##.##} {1}", size, Suffix);
            }
            else
            {
                if (ShowZero)
                {
                    return String.Format("0 {0}", Suffix);
                }
                else
                {
                    return "";
                }
            }
        }
    }
}
